/* 已移至公共js
 // API地址
let apiBaseUrl = "http://phpclub.org.cn:8080/api";
// 登录信息获取
let userOption = {};
// 1、首先判断地址是否带用户登录信息
if (location.search != '') {
	// 利用公共函数结构地址的数据
	userOption = getStrOfObj(location.search);
	// console.log(option);
}
// 2、地址不带登录信息，检查cookie是否存在
if (getCookie("jd")) {
	// 利用cookie获取用户信息
	let option = getStrOfObj(getCookie("jd"));
	// 地址对象+cookie对象
	for (let v in option) {
		if (!userOption.v) {
			userOption[v] = option[v]
		}
	}
}
// 3、设置用户信息
$('#userIndex').text(userOption.nickname); */

// 二、获取数据
$.ajax({
	url: 'http://phpclub.org.cn:8080/api/cart/lists',
	type: "get",
	dataType: "json",
	data: `userId=${userOption.id}`,
	success: function(datas) {
		// 返回数据正常
		if (datas.msg != "ok") {
			return;
		}
		let da = datas.data;
		// 数据正常
		if (!da) {
			return;
		}
		// 购物车为空提示
		if (da.length == 0) {
			$('.cart-tbodys').html(`<a href="../index.html">去添加商品</a>`);
			return;
		}
		let tbodysHtml = "";
		for (let v of da) {
			tbodysHtml += `
				<div class="cart-tbody" data-cartId=${v.id}>
					<!-- 店名 -->
					<div class="store-name">
						<!-- 全选 -->
						<div class="column ts-checkbox">
							<input type="checkbox" class="itemchek" data-cartId=${v.id}>
							<span>店名</span>
						</div>
					</div>
					<!-- 商品具体列表 -->
					<div class="list-item">
						<!-- 商品item -->
						<div class="com-item">
							<!-- 全选 -->
							<div class="column t-checkbox">
								<input type="checkbox" class="one-chek" data-cartId=${v.id}>
							</div>
							<!-- 商品图片介绍 -->
							<div class="column t-goods" data-goodsId='${v.goods.id}'>
								<img src="${v.goods.goodsThumb}">
								<div>
									${v.goods.goodsBody}
								</div>
							</div>
							<!-- 商品简介 -->
							<div class="column t-props">
								<p>${v.goods.goodsBody}</p>
							</div>
							<!-- 价格 -->
							<div class="column t-price">
								<span id="col-price">
									￥${v.goods.shopPrice}
								</span>
							</div>
							<!-- 数量 -->
							<div class="column t-quantity">
								<input type="button" class="readd btn" value="-" />
								<input type="text" class="shap-num" value="${v.goodsCount}" data-cartId='${v.id}' data-goodsId='${v.goods.id}' data-userId="${v.userId}" />
								<input type="button" value="+" class="btn add" />
							</div>
							<div class="column t-sum">￥${(v.goodsCount)*(v.goods.shopPrice)}</div>
							<div class="column t-action">
								<button type="button" class="btn btn-danger" data-cartId=${v.id} data-Id="${v.goods.id}">删除</button>
							</div>
						</div>
					</div>
				</div>
			`;
		}
		// 渲染于页面
		$('.cart-tbodys').html(tbodysHtml);
		//结算
		SetSumPrice('.com-item');
		//将购物车数量等于1的减键关闭
		for (let v of $('.shap-num')) {
			if (parseInt($(v).val()) <= 1) {
				$(v).prev().attr('disabled', 'disabled');
			}
		}
	}
})

/**
 * 方法说明 计算给定盒子里的选中商品的总价格
 * @param {String} className 表示类名
 * @return {Number} numPrice 表示总价
 */
function SetSumPrice(className) {
	let numPrice = 0
	//判断类名有效性
	if ($(className).length == 0) {
		// throw new Error("未找到对象！！");
		// 找不到item总价为零
		//改变选中数量
		$('#chek-num').html(0);
		//改变总价
		$('#shapping-num').html(0)
		return;
	}
	//获取所有类名下的对象数组
	let items = $(className);
	//记录选中的数量
	let chekNum = 0;
	for (let v of items) {
		//判断是否选择 
		if (!$(v).find('input[type="checkbox"]').prop('checked')) {
			continue;
		}

		//获取单价
		let price = parseInt($(v).find('#col-price').html().trim().replace("￥", ''));
		//获取数量并且不等于负值
		let num = parseInt($(v).find('.shap-num').val());
		// 累加
		numPrice += price * num;
		chekNum++;
	}
	//改变选中数量
	$('#chek-num').html(chekNum);
	//改变总价
	$('#shapping-num').html(numPrice)
}

// 全选按钮
$('#chek1,#chek2').on('click', function() {
	//将item下全选
	$(".cart-tbodys input[type='checkbox']").prop('checked', $(this).prop('checked'));
	//购物车底部结算也选中
	$('#chek2,#chek1').prop('checked', $(this).prop('checked'));
	//结算
	SetSumPrice('.com-item');
})

// item中的全选
$('.cards-body').on('click', '.itemchek', function(e) {
	// 找到item
	$(this).parent().parent().next().find('input[type="checkbox"]').prop('checked', $(this).prop('checked'));
	//结算
	SetSumPrice('.com-item');
})

// 单个选中
$('.cart-tbodys').on('click', ".one-chek", function(e) {
	//结算
	SetSumPrice('.com-item');
})

// 减按键
$('.cart-tbodys').on('click', '.readd', function(e) {
	let num = parseInt($(this).next().val());
	//判断数字边界
	$(this).next().val(--num);
	if (num <= 1) {
		$(this).attr('disabled', 'disabled');
	}
	//结算
	SetSumPrice('.com-item');
	// 获取用户id
	let userId = $(this).next().attr('data-userId');
	// 获取购物车id
	let cartId = $(this).next().attr('data-cartId');
	// 获取商品id
	let goodsId = $(this).next().attr('data-goodsId');
	// 发送Ajax修改后端数据
	$.ajax({
		url: apiBaseUrl + '/cart/change',
		type: "post",
		dataType: "json",
		data: `userId=${userId}&cartId=${cartId}&goodsId=${goodsId}&goodsCount=${num}`,
		success: function(datas) {
			// 后续可加弹出提示修改成功
		}
	})
})

// 加键
$('.cart-tbodys').on('click', '.add', function(e) {
	let num = parseInt($(this).prev().val());
	$(this).prev().val(++num);
	//判断数字边界
	if (num > 1) {
		$(this).prev().prev().attr('disabled', false);
	}
	//结算
	SetSumPrice('.com-item');
	// 获取用户id
	let userId = $(this).prev().attr('data-userId');
	// 获取购物车id
	let cartId = $(this).prev().attr('data-cartId');
	// 获取商品id
	let goodsId = $(this).prev().attr('data-goodsId');
	// 发送Ajax修改后端数据
	$.ajax({
		url: apiBaseUrl + '/cart/change',
		type: "post",
		dataType: "json",
		data: `userId=${userId}&cartId=${cartId}&goodsId=${goodsId}&goodsCount=${num}`,
		success: function(datas) {
			// 后续可加弹出提示修改成功
		}
	})
})
// 删除按键
$('.cart-tbodys').on('click', '.btn-danger', function(e) {
	// 只有一个item则删除body
	let len = $(this).parent().parent().parent().find('com-item').length;
	if (len > 1) {
		$(this).parent().parent().parent().remove();
	}
	$(this).parent().parent().parent().parent().remove();
	//结算
	SetSumPrice('.com-item');
	// 发送Ajax删除商品
	// 获取用户id
	let userId = userOption.id;
	// 获取购物车id
	let cartId = $(this).attr('data-cartid');
	$.ajax({
		url: apiBaseUrl + "/cart/remove",
		type: 'get',
		dataType: "json",
		data: `userId=${userId}&cartId=${cartId}`,
		success: function(datas) {
			// 后续可加弹出提示删除成功
		}
	})
})

// 删除选中的商品
$('.chek-btn').on('click', function(e) {
	// 记录选中的购物车id
	let checkBtnId = [];
	$('.one-chek').each(function(v) {
		//判断选中
		if ($(this).prop('checked')) {
			//记录选中的购物车id
			checkBtnId.push($(this).attr("data-cartid"));
			// 删除选中的item
			let len = $(this).parent().parent().parent().find('com-item').length;
			// 只有一个item则删除body
			if (len > 1) {
				$(this).parent().parent().parent().remove();
			}
			$(this).parent().parent().parent().parent().remove();
		}
	});
	//结算
	SetSumPrice('.com-item');
	// 发送Ajax删除商品
	// 获取用户id
	let userId = userOption.id;
	// 循环删除选中的商品 --后续可批量删除
	for (let v of checkBtnId) {
		$.ajax({
			url: apiBaseUrl + "/cart/remove",
			type: 'get',
			dataType: "json",
			data: `userId=${userId}&cartId=${v}`,
			success: function(datas) {
				// 后续可加弹出提示删除成功
				console.log(datas)
			}
		})
	}
})

// 清空购物车
$('.clearCar').on('click', function(e) {
	// 清空购物车商品列表
	let html = `<a href="../index.html">返回首页添加商品</a>`;
	$('.cart-tbodys').html(html);
	// 发送Ajax清空购物车
	$.ajax({
		url: apiBaseUrl + "/cart/clear",
		type: "get",
		dataType: "json",
		data: `userId=${userOption.id}`,
		success: function(datas) {
			console.log(datas);
		}
	})
})

// 添加地址
$('#address').on("click", function(e) {
	// 添加弹出层
	layer.open({
		type: 2,
		title: "添加地址",
		content: 'layaddress.html',
		area: ["700px", "500px"]
	});

})

// 配送至 地址渲染
// 读取地址列表
function getaddress() {
	$.ajax({
		url: apiBaseUrl + "/address/lists",
		type: "get",
		dataType: "json",
		data: {
			userId: userOption.id
		},
		success: function(datas) {
			//后端返回正常
			if (datas.msg != "ok") {
				layer.msg(datas.msg);
				return;
			}
			let da = datas.data;
			// 渲染地址html
			let reses = '';
			for (let v of datas.data) {
				reses += `
				<option value="${v.id}">${v.address}</option>
			`;
			}
			// 渲染
			$('#select-address').html(reses);
		}
	})
}
// 调用地址刷新
getaddress();

// 去结算
$('#go-settlement').on('click', function(e) {
	// 判断地址库
	let len = $('#select-address option').length;
	if (len == 0) {
		// 添加弹出层
		layer.open({
			type: 2,
			title: "添加地址",
			content: 'layaddress.html',
			area: ["700px", "500px"],
			cancel: function(index, layero) {
				// 重新渲染
				// 调用地址刷新
				getaddress();
			}
		});
		return;
	}
	// 判断购物车商品数量
	if($('.com-item').length == 0){
		layer.msg("购物车空荡荡~~");
		return;
	}
	// 获取所有选中结算的商品
	let chekGoods = $('.one-chek:checked');
	// 判断购物车数量
	if(chekGoods.length == 0){
		layer.msg("请勾选商品才能去付款！！！")
		return;
	}
	// 储存购物车
	let cartarr = [];
	// 循环取出值
	for (let v of chekGoods) {
		//储存购物车信息
		let cart = {};
		// 回退至item父元素节点
		let parItem = $(v).parent().parent();
		//获取商品id
		let goodsId = parItem.find(".shap-num").attr('data-goodsid');
		cart['goodsId'] = goodsId;
		// 获取购物车id
		let cartId = parItem.find(".shap-num").attr('data-cartid');
		cart['cartId'] = cartId
		// 获取商品数量
		let shapNum = parItem.find(".shap-num").val().trim();
		cart['shapNum'] = shapNum
		// 获取小计
		let shapPriceNum = parItem.find(".t-sum").html().replace("￥", "").trim();
		cart['shapPriceNum'] = shapPriceNum
		// 添加购物车数组
		cartarr.push(cart);
	}
	// 最后序列化的对象
	option = {
		'data': cartarr
	};
	//获取总价
	let sumPrice = $('#shapping-num').html().trim();
	option['sumPrice'] = sumPrice;
	//获取地址Id
	let addressId = $('#select-address option:checked').val()
	option['addressId'] = addressId;
	// 跳转
	location.href = 'settlement.html?cart='+decodeURI(JSON.stringify(option)) ;
})
